The increasing popularity of the Internet and the increased reliance on the client/server model for computer networks has resulted in increasing number of data files being transferred between computers across a network. Unlike the mainframe computer model, the client/server model distributes labor between the computers on the network. Computers that provide service to other computers on the network are typically referred to as servers. Computers that use the services of another computer are typically referred to as clients.
Referring to FIG. 1 shows a client-server configuration that includes a server 100 and a plurality of client computers 110a-c interconnected in a network. If the client computers 110a-c are connected to the Internet, they preferably include browser software stored on a memory storage medium in the computer. This browser software allows the client to access information stored on the web server. A typical access request would be a client request to the server to view or print an image file stored on the web server. Problems occur when, dependent on the specific application or the use intended by the client application, the client may want a different versions of or different properties than the image file sent by the server.
A specific example of the server transmitting an image file where the properties of the image file are not tuned for the particular client application, would be the transmission of an image file designed for viewing on a Macintosh computer, that is sent to a PC for viewing. Typically the gamma setting, is different for a Macintosh computer versus a PC. Since the gamma setting for a MAC will result in an image on a PC that is too dark, the client will either have to live with a too dark image or adjust the brightness of the image. Adjustment to the brightness of the image will typically be made manually by a client application.
A second example, where the client may want a data file transmitted from the server to have different properties, is the case where the compression algorithm used by the server is not tuned for the client application. Web pages on the Internet frequently include graphical image files that can be downloaded from a website. The problem associated with these image files is that, dependent upon the requested resolution, these files can be quite large. Because of the large size of these files, transfer of the image files between the server and client is often time consuming. Further, because transmission for the plurality of client computers may come across a single link, a bottleneck in the transmission of data can occur.
One way of dealing with the problems associated with large data transmission associated with image files is to compress image files. Typically image data files are compressed using a JPEG compression algorithm before transmission to the client application. JPEG defines a standard algorithm for image compression that represents images with less data in order to save storage costs as well as transmission time and costs. JPEG has gained great popularity because it allows the interchange of images between diverse applications. However, dependent on the client application requirements it may be appropriate to perform JPEG compression. For example, client applications typically exchange JPEG data streams as single resolution images regardless of the target resolutions. For example, typical displays have resolutions of around 72 dots per inch (dpi), whereas typical printers can handle 300-1200 dpi or higher. Consequently, displaying a print resolution JPEG image may be very inefficient. Furthermore, printing a display resolution JPEG image yields a very low quality output. Thus, there is a need for improved techniques for transmission of graphical image files in a network environment to improve the data quality of the image and so that the available bandwidth is used efficiently.
A method and apparatus which provides a means for modifying data to be transmitted across a network, in order to align the characteristics of the data to be modified for its intended use within a client application is needed.
The present invention provides a computer implemented method and apparatus for modifying data to be used by a client application in a client/server network. The data modifications are performed by the server computer and are based on information about the client application""s intended use of the data. The modifications made to the data are made with the intent of optimizing the data for its intended client application use. However, because the optimization by the server occurs before data transmission to the client application, reductions in the amount of data transferred will help increase the bandwidth between the server and client computers.
The steps for implementing the present invention include: transmitting information to the server computer from the client computer, wherein the transmitted information defines the intended use of data in a client application stored on the client computer; based on the transmitted information, modifying the data to optimize the data for its intended use by the client application, wherein such modification is performed by the server computer before transmitting the modified data to the client application; and transmitting the modified data to the server computer. In the preferred embodiment, the modifications to the data are made as the request is made from the server application. Because the computations are made on the fly, the modified data may be immediately customized. The computation results are not dependent upon previously created files. Instead, any files or data created is created in response to requests made by the server.
Implementing the present invention typically requires modification or extension of both the standard server application and standard client application programs. The client application program stored on the client computer typically is modified so that it has the capacity to notify the server of its intended use. The server application program stored on the server is modified to respond to the information received from the client regarding the intended use. Typically, the modifications to the server and client application programs are done by modifying or extending the existing server and client application programs, although in some cases this added communication ability between the client and server application programs is accomplished by creating a new programs.